package com.small.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.small.aop.AspectProxy;

/**
 * 切入点，使用当前注解需要传入切面列表<br/>
 * 使用切面的类和方法必须使用当前注解<br/>
 * 需传入要使用的切面类的实例类<br/>
 *如当前类使用切面，当前方法也使用切面这时会取最大集的切面列表 <br/>
 * eg:<br/>
 * @Pointcut(TestInterceptor.class) / @Pointcut({TestInterceptor.class,TestInterceptor2.class})
 * @author 乐乐
 *
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Pointcut {
  
  /**拦截器，传入需要使用的拦截器类，可传入多个
   * @return
   */
  public Class<? extends AspectProxy>[] value() default {};
  
}
